package com.hncu.test;

import com.hncu.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    //将in定义为全局类对象..
    static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        //创建集合
        ArrayList<Student> arrayList = new ArrayList<>();
        //菜单搭建
        lo:
        while (true) {
            System.out.println("--------欢迎来到学生管理系统--------");
            System.out.println("1 添加学生");
            System.out.println("2 删除学生");
            System.out.println("3 修改学生");
            System.out.println("4 查看学生");
            System.out.println("5 退出系统");
            System.out.println("请输入您的选择：");
            int choice = in.nextInt();
            switch (choice) {
                case 1:
                    //System.out.println("添加学生");
                    addStudentt(arrayList);
                    break;
                case 2:
//                    System.out.println("删除学生");
                    deleteStudent(arrayList);
                    break;
                case 3:
//                    System.out.println("修改学生");
                    setStudent(arrayList);
                    break;
                case 4:
//                    System.out.println("查看学生");
                    checkStudent(arrayList);
                    break;
                case 5:
                    System.out.println("感谢您的使用");
                    break lo;
                default:
                    System.out.println("输入错误，请重新输入！");
                    break ;
            }
        }
    }
    //获取传入学号的索引
    public static int getIndex(ArrayList<Student> arrayList, String sid) {
        int Index = -1;//如果学号不在集合中，返回-1；
        for (int i = 0; i < arrayList.size(); i++) {//遍历集合
            Student stu = arrayList.get(i);//得到每个学生对象
            if (stu.getSid().equals(sid)) {//学号相同
                Index = i;//让Index记录好每个学生的索引位置
            }
        }
        return Index;
    }

    //添加学生
    public static void addStudentt(ArrayList<Student> arrayList) {
        String sid;//不能在while中定义
        while (true) {
            //输入学号
            System.out.println("请输入学号：");
            sid = in.next();
            int Index = getIndex(arrayList, sid);
            if (Index == -1) {//集合内没有这个学号，可以正常添加
                break;
            } else {
                System.out.println("学号已被占用");
            }
        }
        //输入其他学生信息
        System.out.println("请输入姓名：");
        String name = in.next();
        System.out.println("请输入年龄：");
        int age = in.nextInt();
        System.out.println("请输入生日：");
        String birthday = in.next();
        //创建学生对象
        Student stu = new Student(sid, name, age, birthday);
        //将封装好的对象放到容器中
        arrayList.add(stu);
        //输出提示信息
        System.out.println("添加学生成功");
    }

    //删除学生
    public static void deleteStudent(ArrayList<Student> arrayList) {
        System.out.println("请输入要删除的学生学号：");
        //输入学号
        String sid = in.next();
        int Index = getIndex(arrayList, sid);//让Index方法找到目标学生
        if (Index == -1) {//集合里没有这个学号
            System.out.println("查无此人，请重新输入");
        } else {
            arrayList.remove(Index);//移除该学生
            System.out.println("删除成功");
        }
    }

    //修改学生
    public static void setStudent(ArrayList<Student> arrayList) {
        System.out.println("请输入要修改学生的学号");
        String sid = in.next();
        int Index = getIndex(arrayList, sid);//用Index方法找到该学号学生对象的索引，返回给Index
        if (Index == -1) {//集合里没有这个学号
            System.out.println("查无此人，请重新输入");
        } else {
            //输入学生信息
            System.out.println("请修改姓名：");
            String name = in.next();
            System.out.println("请修改年龄：");
            int age = in.nextInt();
            System.out.println("请修改生日：");
            String birthday = in.next();
            //封装成一个新的学生对象
            Student stu = new Student(sid, name, age, birthday);
            //调用集合的set方法修改集合内容
            arrayList.set(Index, stu);
            //提示修改结果
            System.out.println("修改成功");
        }
    }

    //查看学生
    public static void checkStudent(ArrayList<Student> arrayList) {
        //判断集合中是否有数据
        if (arrayList.size() == 0) {
            System.out.println("无信息，请添加信息");
        }
        else {
            //表头\t表示在其后面加上大空格
            System.out.println("学号\t\t姓名\t年龄\t生日");
            //遍历集合，找出每个学生对象
            for (int i = 0; i < arrayList.size(); i++) {
                Student stu = arrayList.get(i);
                //输出每个学生对象的信息
                System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
            }
        }
    }
}
